1. Field of the Invention
The present invention relates generally to data processing systems and more particularly to a computer-implemented method, apparatus, and computer program product for transmitting information between a Common Object Request Broker Architecture (CORBA) application and a server utilizing Hypertext Transfer Protocol (HTTP).
2. Description of the Related Art
The Common Object Request Broker Architecture (CORBA) is a vendor-independent infrastructure and architecture that is designed for network applications with distributed objects. It automates many common network programming tasks such as object registration, location, and activation, making it simple for clients to make object method invocations on a server. The communication protocol used by CORBA is the Internet Inter-ORB Protocol (IIOP).
FIG. 1 is a block diagram of a data processing environment 100 that includes a server 102 and a client 104 that communicate with each other using IIOP in accordance with the prior art. Applications that are executing within client 104 can invoke methods, which will ultimately be executed on server 102, through Interface Definition Language (IDL) stubs 106 that are provided to client 104 by ORB 108. CORBA IDL stubs 106 are CORBA stubs that are generated by ORB 108. CORBA IDL stubs 106 adhere to the CORBA standard.
A stub defines which methods are available to be invoked through that stub by including method signatures for methods that are available to be invoked through the stub. A method signature includes the method name and the parameters that it takes. In addition, the stub also has information about what type of exception/error the method will raise if necessary. Each method has a unique name that can be called by an application that is executing within the client. When an application wants to invoke a particular method, the application will call the method using the method's unique name. The stub that includes that method then invokes the method in server 102 which executes the method.
The stub is also responsible for transferring information to and from server 102 for client 104. The stub is connected to ORB 108 such that invoking the method through the stub causes ORB 108 to forward the invocation to ORB 110. ORB 110 then uses IDL skeleton 112 to decode the method call into a local method call into server 102.
ORBs 108 and 110 communicate with each other using a communication link 113 that implements Internet Inter-ORB Protocol (IIOP).
CORBA cannot communicate through firewalls directly using IIOP, as depicted by FIG. 2. This is one of CORBA's major weaknesses. FIG. 2 is a block diagram of data processing environment 100 that includes a firewall 114 that prevents server 102 and client 104 from communicating with each other using IIOP in accordance with the prior art.
There exists a number of methods to permit IIOP packets to be transmitted through a firewall, but all methods suffer from some significant disadvantage. One solution is to create a custom proxy server that allows IIOP packets to go through the firewall. Developing such a proxy server is time consuming.
Another solution is to sacrifice security and open up a hole in the firewall, but not many are willing to do so.
Therefore, a need exists for a method, apparatus, and computer program product for permitting existing CORBA applications to have an HTTP tunneling ability, such as through firewalls, without requiring modification of the CORBA applications or a significant change in the other code.